#pragma once
#include <cstdint>
#include <map>
enum class SymbolEnum : uint32_t {
    ETH = 0,
    BTC,
    SOL,
    DOGE,
    _1000PEPE,
    WIF,
    WLD,
    XRP,
    LINK,
    AVAX,
    NEAR,
    DOT,
    TON,
    TAO,
    POL,
    TRUMP,
    SUI,
    _1000SHIB,
    _1000BONK,
    _1000FLOKI,
    BERA,
    FARTCOIN,
    AI16Z,
    POPCAT,
    HYPE,
    BNB,
    JUP,
    AAVE,
    MKR,
    ENA,
    UNI,
    APT,
    SEI,
    KAITO,
    IP,
    LTC,
    CRV,
    PENDLE,
    ONDO,
    ADA,
    S,
    VIRTUAL,
    SPX,
    TRX,
    SYRUP,
    PUMP,
    LDO,
    PENGU,
    PAXG,
    EIGEN,
    ARB,
    RESOLV,
    GRASS,
    ZORA,
    LAUNCHCOIN,
    OP,
    ZK,
    PROVE,
    BCH,
    HBAR,
    ZRO,
    GMX,
    DYDX,
    MNT,
    ETHFI,
    AERO,
    USELESS,
    TIA,
    MORPHO,
    VVV,
    YZY,
    XPL,
    WLFI,
    CRO,
    NMR,
    DOLO,
    LINEA,
    XMR,
    PYTH,
    SKY,
    MYX,
    _1000TOSHI,
    AVNT,
    ASTER,
    _0G,
    STBL,
    APEX,
    FF,
    _2Z,
    EDEN,
    ZEC,
    MON
};

enum class ExchangeEnum : uint8_t {
    BINANCE = 0,
    LIGHTER = 1,
};

// ✅ SymbolEnum 映射
const std::map<std::string, SymbolEnum> SymbolEnumMap = {
    {"ETH", SymbolEnum::ETH},
    {"BTC", SymbolEnum::BTC},
    {"SOL", SymbolEnum::SOL},
    {"DOGE", SymbolEnum::DOGE},
    {"1000PEPE", SymbolEnum::_1000PEPE},
    {"WIF", SymbolEnum::WIF},
    {"WLD", SymbolEnum::WLD},
    {"XRP", SymbolEnum::XRP},
    {"LINK", SymbolEnum::LINK},
    {"AVAX", SymbolEnum::AVAX},
    {"NEAR", SymbolEnum::NEAR},
    {"DOT", SymbolEnum::DOT},
    {"TON", SymbolEnum::TON},
    {"TAO", SymbolEnum::TAO},
    {"POL", SymbolEnum::POL},
    {"TRUMP", SymbolEnum::TRUMP},
    {"SUI", SymbolEnum::SUI},
    {"1000SHIB", SymbolEnum::_1000SHIB},
    {"1000BONK", SymbolEnum::_1000BONK},
    {"1000FLOKI", SymbolEnum::_1000FLOKI},
    {"BERA", SymbolEnum::BERA},
    {"FARTCOIN", SymbolEnum::FARTCOIN},
    {"AI16Z", SymbolEnum::AI16Z},
    {"POPCAT", SymbolEnum::POPCAT},
    {"HYPE", SymbolEnum::HYPE},
    {"BNB", SymbolEnum::BNB},
    {"JUP", SymbolEnum::JUP},
    {"AAVE", SymbolEnum::AAVE},
    {"MKR", SymbolEnum::MKR},
    {"ENA", SymbolEnum::ENA},
    {"UNI", SymbolEnum::UNI},
    {"APT", SymbolEnum::APT},
    {"SEI", SymbolEnum::SEI},
    {"KAITO", SymbolEnum::KAITO},
    {"IP", SymbolEnum::IP},
    {"LTC", SymbolEnum::LTC},
    {"CRV", SymbolEnum::CRV},
    {"PENDLE", SymbolEnum::PENDLE},
    {"ONDO", SymbolEnum::ONDO},
    {"ADA", SymbolEnum::ADA},
    {"S", SymbolEnum::S},
    {"VIRTUAL", SymbolEnum::VIRTUAL},
    {"SPX", SymbolEnum::SPX},
    {"TRX", SymbolEnum::TRX},
    {"SYRUP", SymbolEnum::SYRUP},
    {"PUMP", SymbolEnum::PUMP},
    {"LDO", SymbolEnum::LDO},
    {"PENGU", SymbolEnum::PENGU},
    {"PAXG", SymbolEnum::PAXG},
    {"EIGEN", SymbolEnum::EIGEN},
    {"ARB", SymbolEnum::ARB},
    {"RESOLV", SymbolEnum::RESOLV},
    {"GRASS", SymbolEnum::GRASS},
    {"ZORA", SymbolEnum::ZORA},
    {"LAUNCHCOIN", SymbolEnum::LAUNCHCOIN},
    {"OP", SymbolEnum::OP},
    {"ZK", SymbolEnum::ZK},
    {"PROVE", SymbolEnum::PROVE},
    {"BCH", SymbolEnum::BCH},
    {"HBAR", SymbolEnum::HBAR},
    {"ZRO", SymbolEnum::ZRO},
    {"GMX", SymbolEnum::GMX},
    {"DYDX", SymbolEnum::DYDX},
    {"MNT", SymbolEnum::MNT},
    {"ETHFI", SymbolEnum::ETHFI},
    {"AERO", SymbolEnum::AERO},
    {"USELESS", SymbolEnum::USELESS},
    {"TIA", SymbolEnum::TIA},
    {"MORPHO", SymbolEnum::MORPHO},
    {"VVV", SymbolEnum::VVV},
    {"YZY", SymbolEnum::YZY},
    {"XPL", SymbolEnum::XPL},
    {"WLFI", SymbolEnum::WLFI},
    {"CRO", SymbolEnum::CRO},
    {"NMR", SymbolEnum::NMR},
    {"DOLO", SymbolEnum::DOLO},
    {"LINEA", SymbolEnum::LINEA},
    {"XMR", SymbolEnum::XMR},
    {"PYTH", SymbolEnum::PYTH},
    {"SKY", SymbolEnum::SKY},
    {"MYX", SymbolEnum::MYX},
    {"1000TOSHI", SymbolEnum::_1000TOSHI},
    {"AVNT", SymbolEnum::AVNT},
    {"ASTER", SymbolEnum::ASTER},
    {"0G", SymbolEnum::_0G},
    {"STBL", SymbolEnum::STBL},
    {"APEX", SymbolEnum::APEX},
    {"FF", SymbolEnum::FF},
    {"2Z", SymbolEnum::_2Z},
    {"EDEN", SymbolEnum::EDEN},
    {"ZEC", SymbolEnum::ZEC},
    {"MON", SymbolEnum::MON}
};

// ✅ ExchangeEnum 映射
const std::map<std::string, ExchangeEnum> ExchangeEnumMap = {
    {"BINANCE", ExchangeEnum::BINANCE},
    {"LIGHTER", ExchangeEnum::LIGHTER}
};

//---------------------- 订单相关 ------------------//

enum class OrderSideEnum : uint8_t {
    BID = 0,
    ASK = 1,
};

enum class OrderSatusEnum : uint8_t {
    OPEN = 0,
    PARTIALLY_FILLED = 1,
    FILLED = 2,
    CANCELED = 3,
    REJECTED = 4,
    EXPIRED = 5,
};

enum class OrderActionEnum : uint8_t {
    OPEN = 0,
    CANCEL = 1,
};

